The quality of a user's experience on a network can be greatly impacted by conditions on the network, such as latency and available bandwidth between the user's device and one or more servers. For example, in highly interactive client-server applications, a user at a client device may make repeated requests for content from a server. Even if there is sufficient bandwidth between the client device and the server to enable relatively rapid transfers of large files, long latency times can contribute to a frustrating user experience where the server does not appear to be responsive to the client device. Conversely, in client-server applications that involve large data transfers but relatively few client-server interactions, short latency times cannot overcome the drawbacks of insufficient bandwidth to provide acceptable transfer times for the data.
In many cases, a given online service may be associated with a number of servers that are capable of providing the online service to client devices. One way to address the considerations outlined above is to direct each client device to a preferred server that is capable of providing a high quality of service to the user. However, existing techniques for directing a client device to a server often result in the client device communicating with a server that is not ideal for providing a quality user experience. Moreover, existing techniques often overload certain servers while leaving other servers relatively underutilized.
As an example, client devices often request access to an online service by providing a domain name to a Domain Name Service (“DNS”) server. In response, the DNS server will provide the client device with a list of one or more servers that may be located in geographic proximity to the DNS server. Thus, it is the geographic location of the DNS server that is often determinative of which server a client device will use to access a web service. However, the client device may be located relatively far away from the DNS server. Moreover, network latency and bandwidth are not always directly correlated to geographic proximity, and, in some cases, servers that are relatively far away from a client device in physical distance may be able to provide a higher quality of service than servers that are physically closer to the client device.